package com.atwbj.langchain4jbeta3learndemo.service;

import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.model.openai.internal.embedding.Embedding;
import lombok.extern.slf4j.Slf4j;

/**使用 注解@Tool 注解任何 Java 方法， 并在创建 AI 服务时指定它们。
 AI 服务会自动将这些工具方法转换为 ToolSpecification， 并在每次与 LLM 交互的请求中包含它们。
 当 LLM 决定调用工具时，AI 服务将自动执行相应的方法， 并将方法的返回值（如果有）发送回 LLM。
 * 知识出处，https://docs.langchain4j.dev/tutorials/tools/#tool
 */
@Slf4j
public class InvoiceHandler {

    @Tool("根据用户提交的开票信息进行开票")
    public String handle(@P("公司名称") String companyName,
                         @P("税号") String dutyNumber,
                         @P("金额保留两位有效数字") String amount) throws Exception {
//        log.info("companyName =>>>> {} dutyNumber =>>>> {} amount =>>>> {}", companyName, dutyNumber, amount);
        //----------------------------------
        // 这块写自己的业务逻辑，调用redis/rabbitmq/kafka/mybatis/顺丰单据/医疗化验报告/支付接口等第3方
        //----------------------------------
        //为了演示，我们直接调用第三方天气服务
        System.out.println(new WeatherService().getWeatherV2("101010100"));


        return "开票成功";
    }
}
